package View;

import controleur.AbstractChatControleur;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;

/**
 *
 * @author Matthieu
 */
public class NewConnectionFrame 
{
    JFrame frame = new JFrame();
    Dimension size = new Dimension(400, 100);
    AbstractChatControleur controleur;
    JTextField ChampAdresse;
    
    
    
    /**
    *<b>Constructeur NewConnectionFrame</b>
    * @param controleur
    */
    public NewConnectionFrame(AbstractChatControleur controleur)
    {
        this.controleur = controleur; 
        buildFrame(controleur);
    }
    
    
    /**
    *<b>Methode NewConnectionFrame</b>
    * Construit la frame
    * @param controleur
    */
    private void buildFrame(AbstractChatControleur controleur){

        frame.setTitle("Creation d'une nouvelle connection");
        
        frame.add(buildPanel());
        frame.setPreferredSize(size);
        frame.setResizable(false);
        frame.setSize(size);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);        
	frame.pack();
        
        this.displayFrame();
    }
    
    
    /**
    *<b>Methode displayFrame</b>
    * Construit la frame
    * @param controleur
    */
    public void displayFrame(){
        frame.setVisible(true);
    }
        
    
    public JPanel buildPanel()
    {
        JPanel mainPanel = new JPanel(new GridBagLayout());
        GridBagConstraints allignement = new GridBagConstraints();
        JLabel TexteAdresse = new JLabel("Nom de l'hote distant : ");
        ChampAdresse = new  JTextField(20);
        ChampAdresse.setMinimumSize(new Dimension(160,20));
        ChampAdresse.addKeyListener(new KeyAdapter() {
                             @Override
                             public void keyPressed(KeyEvent key){
                                if(key.getKeyCode() == KeyEvent.VK_ENTER){
                                    commit();
                                }
                             }
                            });
        JButton BouttonValider = new JButton("Ajouter");
        JButton BouttonAnnuler = new JButton("Annuler");
        
        ChampAdresse.getText();
        BouttonValider.addActionListener(new NewConnectionFrameListener());
        BouttonAnnuler.addActionListener(new NewConnectionFrameListener());
        
        BouttonValider.requestFocusInWindow();
        BouttonValider.setName("BouttonValider");
        BouttonAnnuler.setName("BouttonAnnuler");
        
        allignement.weighty = 2;
        allignement.gridy = 0;
        mainPanel.add(TexteAdresse, allignement);
        mainPanel.add(ChampAdresse, allignement);
        allignement.gridy = 1;
        mainPanel.add(BouttonValider, allignement);
        mainPanel.add(BouttonAnnuler, allignement);
                
        return mainPanel;
    }
    
    /**
    *<b>Methode getAdresse</b>
    * Retourne l'adresse saisie
    * @param controleur
    */
    public String getAdresse() {
       return ChampAdresse.getText();
    }
    
    /**
    *<b>Methode commit</b>
    * Cree une nouvelle conection a partir de l'adresse saisie
    * @param controleur
    */
    public void commit(){
        System.out.println(getAdresse());
        try {
            controleur.createConnection(getAdresse());
        } catch (UnknownHostException ex) {
            Logger.getLogger(NewConnectionFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
            frame.dispose();
    }
    
    //*************************************************************************
    //****************************LISTENERS************************************
    //*************************************************************************
    private class NewConnectionFrameListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e){
            JButton item = (JButton) e.getSource();

            if ("BouttonValider".equals(item.getName())){
                commit();
            } else if ("BouttonAnnuler".equals(item.getName())) 
            {
                frame.dispose();
            }
        }
    }
}